package com.wwy.arithmetic.suanfa;

import java.util.Deque;
import java.util.LinkedList;

/**
 * 有序的括号
 */
public class YouXuKuoHao {
    /**
     * 给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串 s ，判断字符串是否有效。
     *
     * 有效字符串需满足：
     * 左括号必须用相同类型的右括号闭合。
     * 左括号必须以正确的顺序闭合。
     * 每个右括号都有一个对应的相同类型的左括号。

     * 示例 1：
     *
     * 输入：s = "()"
     * 输出：true
     * 示例 2：
     *
     * 输入：s = "()[]{}"
     * 输出：true
     * 示例 3：
     *
     * 输入：s = "(]"
     * 输出：false
     */

    public static void main(String[] args) {
        boolean judge = judge("()[]{}]");
        System.out.println("judge = " + judge);
    }
   static boolean judge(String s){
        if(s==null ||"".equals(s)){
            return true;
        }
       char[] chars = s.toCharArray();
       Deque<Character> deque  = new LinkedList<>();
       for (char aChar : chars) {
           if(aChar=='('){
               deque.push(')');
           }else if(aChar=='{'){
               deque.push('}');
           }else if(aChar=='['){
               deque.push(']');
           }else if(deque.isEmpty()||aChar!= deque.pop()){
               return false;
           }
       }
       return deque.isEmpty();
   }
}
